home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / char.d < prev    next >
Text File  |  1996-06-26  |  2KB  |  147 lines

  1.  
  2. /*
  3.  *
  4.  *    Copyright (c) 1993-1996 Algorithms Corporation
  5.  *    3020 Liberty Hills Drive
  6.  *    Franklin, TN  37067
  7.  *
  8.  *    ALL RIGHTS RESERVED.
  9.  *
  10.  *
  11.  *
  12.  */
  13.  
  14.  
  15. #include <math.h>
  16.  
  17. defclass  Character : Number  {
  18.     char    iVal;
  19. };
  20.  
  21.  
  22. cmeth    gNewWithChar, <vNew> (int val)
  23. {
  24.     object    obj = gNew(super);
  25.     ivType    *iv = ivPtr(obj);
  26.     iVal = (char) val;
  27.     return(obj);
  28. }
  29.  
  30. imeth    gStringRepValue()
  31. {
  32.     return vSprintf(String, "'%c'", iVal);
  33. }
  34.  
  35. imeth    char    gCharValue()
  36. {
  37.     return (char) iVal;
  38. }
  39.  
  40. imeth    short    gShortValue()
  41. {
  42.     return (short) iVal;
  43. }
  44.  
  45. imeth    unsigned short    gUnsignedShortValue()
  46. {
  47.     return (unsigned short) iVal;
  48. }
  49.  
  50. imeth    long    gLongValue()
  51. {
  52.     return (long) iVal;
  53. }
  54.  
  55. imeth    double    gDoubleValue()
  56. {
  57.     return (double) iVal;
  58. }
  59.  
  60. imeth    gChangeValue(val)
  61. {
  62.     ChkArg(val, 2);
  63.     iVal = gCharValue(val);
  64.     return self;
  65. }
  66.  
  67. imeth    gChangeCharValue(int val)
  68. {
  69.     iVal = (char) val;
  70.     return self;
  71. }
  72.  
  73. imeth    gChangeShortValue(int val)
  74. {
  75.     iVal = (char) val;
  76.     return self;
  77. }
  78.  
  79. imeth    gChangeUShortValue(unsigned val)
  80. {
  81.     iVal = (char) val;
  82.     return self;
  83. }
  84.  
  85. imeth    gChangeLongValue(long val)
  86. {
  87.     iVal = (char) val;
  88.     return self;
  89. }
  90.  
  91. imeth    gChangeDoubleValue(double val)
  92. {
  93.     iVal = (char) val;
  94.     return self;
  95. }
  96.  
  97. imeth    void    *gPointerValue()
  98. {
  99.     return (void *) &iVal;
  100. }
  101.  
  102. imeth    gFormatChar, <vFormat> ()
  103. {
  104.     char    b[2];
  105.  
  106.     b[0] = iVal;
  107.     b[1] = '\0';
  108.     return gNewWithStr(String, b);
  109. }
  110.  
  111. imeth    int    gHash()
  112. {
  113.     double    t;
  114.  
  115.     t = .6125423371    * (unsigned) iVal;
  116.     t = t < 0.0 ? -t : t;
  117.     return (int) (BIG_INT * (t - floor(t)));
  118. }
  119.  
  120. imeth    int    gCompare(obj)
  121. {
  122.     short    sv, ov;
  123.  
  124.     ChkArg(obj, 2);
  125.     if (ClassOf(obj) != CLASS)
  126.         return gCompare(super, obj);
  127.     if ((sv=iVal) < (ov=ivPtr(obj)->iVal))
  128.         return -1;
  129.     else if (sv == ov)
  130.         return 0;
  131.     else
  132.         return 1;
  133. }
  134.  
  135.  
  136. /*
  137.  *
  138.  *    Copyright (c) 1993-1996 Algorithms Corporation
  139.  *    3020 Liberty Hills Drive
  140.  *    Franklin, TN  37067
  141.  *
  142.  *    ALL RIGHTS RESERVED.
  143.  *
  144.  *
  145.  *
  146.  */
  147.